#include "mainwindow.h"
#include "ui_mainwindow.h"

// 对话框：
// 模态对话框 和 非模态对话框
#include <QDialog>

#include <chrono>
#include <thread>
#include <mutex>
#include <shared_mutex> // 共享锁
#include <memory>
#include <condition_variable>

using namespace std;

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    // 1. 下面方式创建对话框都是可以的(指定了其父窗口，但是还是没有用的，还是一个局部变量的哦)
//    QDialog w(this);
//    w.show();

//    while(true);
//    std::this_thread::sleep_for(std::chrono::seconds(5)); // 前 5 秒还是可以看到的哦，哈哈哈

//    2. 下面的方式和上面的方式是不同的，因为上面创建的是局部变量
    // 2.1 非模态对话框，不会阻塞其他的窗口的。其他的窗口可以继续使用 MainWindow 窗口是可以继续使用的。
//    QDialog qDialog(this);
//    qDialog.show();

//    QDialog* qDialog = new QDialog(this);
//    qDialog->show();

//    2.2 加上了 setModal(true) 就设置成模态对话框了：就必须得先点击使用完这个创建的模态对话框之后，才能继续使用其他的窗口（MainWindow）
//    QDialog* qDialog = new QDialog(this);
//    qDialog->setModal(true);
//    qDialog->show();

    // 2.3下面的方式也算一种设置 modal 对话框的方式
//    QDialog* qDialog = new QDialog(this);
//    qDialog->exec();

//    3. 有时我们需要将对话框置顶，不论其是不是模态对话框我们都可以这么做
    QDialog* qDialog = new QDialog(this);
    qDialog->setWindowFlag(Qt::WindowStaysOnTopHint);
    qDialog->show();
}

MainWindow::~MainWindow()
{
    delete ui;
}

